package com.mfn.sportjava.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.lang.Nullable;

/**
 * 比赛信息解析工具类
 * @author Anyang
 * @version 1.0.0
 * @date 2025/05/25 12:05:27
 * @description
 */
public class MatchParsingUtil {
    private static final Logger log = LoggerFactory.getLogger(MatchParsingUtil.class);

    private MatchParsingUtil() {
        // 私有构造函数，防止实例化
    }

    /**
     * 从比赛描述字符串中解析主队和客队名称。
     * 期望的格式是 "主队 vs 客队" 或 "主队 v 客队" 或 "主队 VS. 客队" 等，不区分大小写。
     *
     * @param matchString 比赛描述字符串，例如 "TeamA vs TeamB"
     * @return 包含两个元素的字符串数组，第一个是主队，第二个是客队。如果解析失败，则返回 {@code null}。
     */
    @Nullable
    public static String[] parseTeamsFromMatchString(String matchString) {
        if (matchString == null || matchString.isBlank()) {
            log.warn("比赛字符串为 null 或空白，无法解析球队。");
            return null;
        }
        // 正则表达式匹配 "vs" 或 "v.s" 或 "v s" 等，忽略大小写，前后允许有空格
        String[] parts = matchString.split("\\s*[vV][sS]?\\.?\\s*", 2);
        return validateTeam(matchString, parts, log);
    }

    @Nullable
    public static String[] validateTeam(String matchString, String[] parts, Logger log) {
        if (parts.length == 2) {
            String homeTeam = parts[0].trim();
            String awayTeam = parts[1].trim();
            if (!homeTeam.isEmpty() && !awayTeam.isEmpty()) {
                return new String[]{homeTeam, awayTeam};
            } else {
                log.warn("从比赛字符串 '{}' 解析出空的主队或客队名称。", matchString);
            }
        } else {
            log.warn("无法从比赛字符串 '{}' 中解析球队。期望格式为 '主队 VS 客队'。", matchString);
        }
        return null;
    }
}